from sqlalchemy import Column, Integer, String, Text, DateTime, Index
from sqlalchemy.sql import func
from db.database import Base
import uuid


class InfoPublishModel(Base):
    """信息发布模型 - 存储店铺发布的各类信息"""
    __tablename__ = "info_publish"

    # 主键，使用UUID
    id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4()))
    
    # 店铺和租户信息
    shop_id = Column(String(36), nullable=True, comment="店铺ID")
    tenant_id = Column(String(36), nullable=True, comment="租户ID")
    
    # 信息内容
    content = Column(Text, nullable=False, comment="信息内容 - 必填字段")
    info_type = Column(String(50), nullable=False, comment="信息类型 - 必填字段")
    type_id = Column(String(36), nullable=True, comment="类型绑定ID")
    
    # 系统字段
    create_by = Column(String(36), nullable=True, comment="创建人ID")
    update_by = Column(String(36), nullable=True, comment="修改人ID")
    create_time = Column(DateTime(timezone=True), server_default=func.now(), comment="创建时间")
    update_time = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), comment="修改时间")
    status = Column(Integer, default=1, comment="状态 1-有效 0-失效")
    
    # 添加索引以优化查询性能
    __table_args__ = (
        # 现有索引 - 保持不变
        Index('idx_shop_type_status', 'shop_id', 'info_type', 'status'),
        
        # 新增索引3：优化排序操作（常用于列表查询的分页排序）
        Index('idx_create_time_desc', 'create_time', postgresql_using='btree', postgresql_ops={'create_time': 'DESC'})
    )